package com.platform.api;

import com.platform.annotation.IgnoreAuth;
import com.platform.entity.CategoryVo;
import com.platform.service.ApiCategoryService;
import com.platform.util.ApiBaseAction;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 作者: @author Harmon <br> 时间: 2017-08-11 08:32<br> 描述: ApiIndexController <br>
 */
@Api(tags = "栏目")
@RestController
@RequestMapping("/api/catalog")
public class ApiCatalogController extends ApiBaseAction {

  @Autowired
  private ApiCategoryService categoryService;

  /**
   * 获取分类栏目数据
   */
  @ApiOperation(value = "获取分类栏目数据")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "id", value = "id", paramType = "query", required = false),
      @ApiImplicitParam(name = "page", value = "page", paramType = "query", required = false),
      @ApiImplicitParam(name = "size", value = "size", paramType = "query", required = false)})
  @IgnoreAuth
  @GetMapping(value = "index")
  public Object index(Integer id,
      @RequestParam(value = "page", defaultValue = "1") Integer page,
      @RequestParam(value = "size", defaultValue = "10") Integer size) {
    Map<String, Object> resultObj = new HashMap();
    Map params = new HashMap();
    params.put("page", page);
    params.put("limit", size);
    params.put("sidx", "sort_order");
    params.put("order", "asc");
    params.put("parent_id", 0);
    //查询列表数据
    List<CategoryVo> data = categoryService.queryList(params);
    //
    CategoryVo currentCategory = null;
    if (null != id) {
      currentCategory = categoryService.queryObject(id);
    }
    if (null == currentCategory && null != data && data.size() != 0) {
      currentCategory = data.get(0);
    } else {
      currentCategory = new CategoryVo();
    }

    //获取子分类数据
    if (null != currentCategory && null != currentCategory.getId()) {
      params.put("parent_id", currentCategory.getId());
      currentCategory.setSubCategoryList(categoryService.queryList(params));
    }

    resultObj.put("categoryList", data);
    resultObj.put("currentCategory", currentCategory);
    return toResponsSuccess(resultObj);
  }

  /**
   *
   */
  @ApiOperation(value = "分类目录当前分类数据接口")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "id", value = "id", paramType = "query", required = false)})
  @IgnoreAuth
  @GetMapping(value = "current")
  public Object current(Integer id) {
    Map<String, Object> resultObj = new HashMap();
    Map params = new HashMap();
    params.put("parent_id", 0);
    CategoryVo currentCategory = null;
    if (null != id) {
      currentCategory = categoryService.queryObject(id);
    }
    //获取子分类数据
    if (null != currentCategory && null != currentCategory.getId()) {
      params.put("parent_id", currentCategory.getId());
      currentCategory.setSubCategoryList(categoryService.queryList(params));
    }
    resultObj.put("currentCategory", currentCategory);
    return toResponsSuccess(resultObj);
  }
}